<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1998

\section[ConLike]{@ConLike@: Constructor-like things}
-}</span><span>
</span><span id="line-7"></span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-9"></span><span>
</span><span id="line-10"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Core.ConLike</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-11"></span><span>          </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier">ConLike</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-12"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeArity"><span class="hs-identifier">conLikeArity</span></a></span><span>
</span><span id="line-13"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFieldLabels"><span class="hs-identifier">conLikeFieldLabels</span></a></span><span>
</span><span id="line-14"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeInstOrigArgTys"><span class="hs-identifier">conLikeInstOrigArgTys</span></a></span><span>
</span><span id="line-15"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeUserTyVarBinders"><span class="hs-identifier">conLikeUserTyVarBinders</span></a></span><span>
</span><span id="line-16"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeExTyCoVars"><span class="hs-identifier">conLikeExTyCoVars</span></a></span><span>
</span><span id="line-17"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeName"><span class="hs-identifier">conLikeName</span></a></span><span>
</span><span id="line-18"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeStupidTheta"><span class="hs-identifier">conLikeStupidTheta</span></a></span><span>
</span><span id="line-19"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeWrapId_maybe"><span class="hs-identifier">conLikeWrapId_maybe</span></a></span><span>
</span><span id="line-20"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeImplBangs"><span class="hs-identifier">conLikeImplBangs</span></a></span><span>
</span><span id="line-21"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFullSig"><span class="hs-identifier">conLikeFullSig</span></a></span><span>
</span><span id="line-22"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeResTy"><span class="hs-identifier">conLikeResTy</span></a></span><span>
</span><span id="line-23"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFieldType"><span class="hs-identifier">conLikeFieldType</span></a></span><span>
</span><span id="line-24"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikesWithFields"><span class="hs-identifier">conLikesWithFields</span></a></span><span>
</span><span id="line-25"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeIsInfix"><span class="hs-identifier">conLikeIsInfix</span></a></span><span>
</span><span id="line-26"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-30"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-31"></span><span>
</span><span id="line-32"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-33"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html"><span class="hs-identifier">GHC.Core.PatSyn</span></a></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-37"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html"><span class="hs-identifier">GHC.Core.TyCo.Rep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier">Type</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ThetaType"><span class="hs-identifier">ThetaType</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier">mkTyConApp</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Multiplicity.html"><span class="hs-identifier">GHC.Core.Multiplicity</span></a></span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../base/src/Data.Data.html#"><span class="hs-identifier">Data.Data</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Data</span></span><span>
</span><span id="line-45"></span><span>
</span><span id="line-46"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Constructor-like things}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span class="hs-comment">-- | A constructor-like thing</span><span>
</span><span id="line-55"></span><span class="hs-keyword">data</span><span> </span><span id="ConLike"><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-var">ConLike</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="RealDataCon"><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-var">RealDataCon</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-56"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span id="PatSynCon"><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-var">PatSynCon</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html#PatSyn"><span class="hs-identifier hs-type">PatSyn</span></a></span><span>
</span><span id="line-57"></span><span>
</span><span id="line-58"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Instances}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-65"></span><span>
</span><span id="line-66"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680886458"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-67"></span><span>    </span><span id="local-6989586621680886456"><span class="annot"><span class="annottext">== :: ConLike -&gt; ConLike -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">(==)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ConLike -&gt; ConLike -&gt; Bool
</span><a href="GHC.Core.ConLike.html#eqConLike"><span class="hs-identifier hs-var">eqConLike</span></a></span><span>
</span><span id="line-68"></span><span>
</span><span id="line-69"></span><span class="annot"><a href="GHC.Core.ConLike.html#eqConLike"><span class="hs-identifier hs-type">eqConLike</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-70"></span><span id="eqConLike"><span class="annot"><span class="annottext">eqConLike :: ConLike -&gt; ConLike -&gt; Bool
</span><a href="GHC.Core.ConLike.html#eqConLike"><span class="hs-identifier hs-var hs-var">eqConLike</span></a></span></span><span> </span><span id="local-6989586621680886454"><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886454"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621680886453"><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886453"><span class="hs-identifier hs-var">y</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ConLike -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886454"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">Unique -&gt; Unique -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">ConLike -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886453"><span class="hs-identifier hs-var">y</span></a></span><span>
</span><span id="line-71"></span><span>
</span><span id="line-72"></span><span class="hs-comment">-- There used to be an Ord ConLike instance here that used Unique for ordering.</span><span>
</span><span id="line-73"></span><span class="hs-comment">-- It was intentionally removed to prevent determinism problems.</span><span>
</span><span id="line-74"></span><span class="hs-comment">-- See Note [Unique Determinism] in GHC.Types.Unique.</span><span>
</span><span id="line-75"></span><span>
</span><span id="line-76"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Uniquable"><span class="hs-identifier hs-type">Uniquable</span></a></span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-77"></span><span>    </span><span id="local-6989586621680886445"><span class="annot"><span class="annottext">getUnique :: ConLike -&gt; Unique
</span><a href="#local-6989586621680886445"><span class="hs-identifier hs-var hs-var hs-var hs-var">getUnique</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886444"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886444"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886444"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-78"></span><span>    </span><span class="annot"><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886443"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886443"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886443"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-79"></span><span>
</span><span id="line-80"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680886441"><span class="annot"><a href="GHC.Types.Name.html#NamedThing"><span class="hs-identifier hs-type">NamedThing</span></a></span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-81"></span><span>    </span><span id="local-6989586621680886434"><span class="annot"><span class="annottext">getName :: ConLike -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var hs-var hs-var hs-var">getName</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886432"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886432"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886432"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-82"></span><span>    </span><span class="annot"><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886431"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886431"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886431"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-83"></span><span>
</span><span id="line-84"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680886428"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-85"></span><span>    </span><span id="local-6989586621680886422"><span class="annot"><span class="annottext">ppr :: ConLike -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886420"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886420"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886420"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-86"></span><span>    </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886419"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886419"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886419"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-87"></span><span>
</span><span id="line-88"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680886411"><span id="local-6989586621680886415"><span class="annot"><a href="GHC.Utils.Outputable.html#OutputableBndr"><span class="hs-identifier hs-type">OutputableBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-89"></span><span>    </span><span id="local-6989586621680886405"><span class="annot"><span class="annottext">pprInfixOcc :: ConLike -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprInfixOcc"><span class="hs-identifier hs-var hs-var hs-var hs-var">pprInfixOcc</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886403"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886403"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprInfixOcc"><span class="hs-identifier hs-var">pprInfixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886403"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-90"></span><span>    </span><span class="annot"><a href="GHC.Utils.Outputable.html#pprInfixOcc"><span class="hs-identifier hs-var">pprInfixOcc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886402"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886402"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprInfixOcc"><span class="hs-identifier hs-var">pprInfixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886402"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-91"></span><span>    </span><span id="local-6989586621680886399"><span class="annot"><span class="annottext">pprPrefixOcc :: ConLike -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var hs-var hs-var hs-var">pprPrefixOcc</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886397"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886397"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886397"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-92"></span><span>    </span><span class="annot"><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886396"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886396"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886396"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-93"></span><span>
</span><span id="line-94"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680886369"><span id="local-6989586621680886371"><span id="local-6989586621680886373"><span id="local-6989586621680886375"><span id="local-6989586621680886377"><span id="local-6989586621680886379"><span id="local-6989586621680886381"><span id="local-6989586621680886383"><span id="local-6989586621680886385"><span id="local-6989586621680886387"><span id="local-6989586621680886392"><span class="annot"><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier hs-type">Data.Data</span></a></span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span></span></span></span></span></span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-95"></span><span>    </span><span class="hs-comment">-- don't traverse?</span><span>
</span><span id="line-96"></span><span>    </span><span id="local-6989586621680886367"><span class="annot"><span class="annottext">toConstr :: ConLike -&gt; Constr
</span><a href="../../base/src/Data.Data.html#toConstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">toConstr</span></a></span></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Constr
</span><a href="GHC.Utils.Misc.html#abstractConstr"><span class="hs-identifier hs-var">abstractConstr</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ConLike&quot;</span></span><span>
</span><span id="line-97"></span><span>    </span><span id="local-6989586621680886362"><span class="annot"><span class="annottext">gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c ConLike
</span><a href="../../base/src/Data.Data.html#gunfold"><span class="hs-identifier hs-var hs-var hs-var hs-var">gunfold</span></a></span></span><span> </span><span class="annot"><span class="annottext">forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">forall r. r -&gt; c r
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Constr -&gt; c ConLike
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;gunfold&quot;</span></span><span>
</span><span id="line-98"></span><span>    </span><span id="local-6989586621680886359"><span class="annot"><span class="annottext">dataTypeOf :: ConLike -&gt; DataType
</span><a href="../../base/src/Data.Data.html#dataTypeOf"><span class="hs-identifier hs-var hs-var hs-var hs-var">dataTypeOf</span></a></span></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; DataType
</span><a href="../../base/src/Data.Data.html#mkNoRepType"><span class="hs-identifier hs-var">mkNoRepType</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ConLike&quot;</span></span><span>
</span><span id="line-99"></span><span>
</span><span id="line-100"></span><span class="hs-comment">-- | Number of arguments</span><span>
</span><span id="line-101"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeArity"><span class="hs-identifier hs-type">conLikeArity</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span>
</span><span id="line-102"></span><span id="conLikeArity"><span class="annot"><span class="annottext">conLikeArity :: ConLike -&gt; Int
</span><a href="GHC.Core.ConLike.html#conLikeArity"><span class="hs-identifier hs-var hs-var">conLikeArity</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886355"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886355"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Int
</span><a href="GHC.Core.DataCon.html#dataConSourceArity"><span class="hs-identifier hs-var">dataConSourceArity</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886355"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-103"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeArity"><span class="hs-identifier hs-var">conLikeArity</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886353"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886353"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Int
</span><a href="GHC.Core.PatSyn.html#patSynArity"><span class="hs-identifier hs-var">patSynArity</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886353"><span class="hs-identifier hs-var">pat_syn</span></a></span><span>
</span><span id="line-104"></span><span>
</span><span id="line-105"></span><span class="hs-comment">-- | Names of fields used for selectors</span><span>
</span><span id="line-106"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFieldLabels"><span class="hs-identifier hs-type">conLikeFieldLabels</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.FieldLabel.html#FieldLabel"><span class="hs-identifier hs-type">FieldLabel</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-107"></span><span id="conLikeFieldLabels"><span class="annot"><span class="annottext">conLikeFieldLabels :: ConLike -&gt; [FieldLabel]
</span><a href="GHC.Core.ConLike.html#conLikeFieldLabels"><span class="hs-identifier hs-var hs-var">conLikeFieldLabels</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886351"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886351"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [FieldLabel]
</span><a href="GHC.Core.DataCon.html#dataConFieldLabels"><span class="hs-identifier hs-var">dataConFieldLabels</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886351"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-108"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFieldLabels"><span class="hs-identifier hs-var">conLikeFieldLabels</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886349"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886349"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [FieldLabel]
</span><a href="GHC.Core.PatSyn.html#patSynFieldLabels"><span class="hs-identifier hs-var">patSynFieldLabels</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886349"><span class="hs-identifier hs-var">pat_syn</span></a></span><span>
</span><span id="line-109"></span><span>
</span><span id="line-110"></span><span class="hs-comment">-- | Returns just the instantiated /value/ argument types of a 'ConLike',</span><span>
</span><span id="line-111"></span><span class="hs-comment">-- (excluding dictionary args)</span><span>
</span><span id="line-112"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeInstOrigArgTys"><span class="hs-identifier hs-type">conLikeInstOrigArgTys</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Scaled"><span class="hs-identifier hs-type">Scaled</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-113"></span><span id="conLikeInstOrigArgTys"><span class="annot"><span class="annottext">conLikeInstOrigArgTys :: ConLike -&gt; [Type] -&gt; [Scaled Type]
</span><a href="GHC.Core.ConLike.html#conLikeInstOrigArgTys"><span class="hs-identifier hs-var hs-var">conLikeInstOrigArgTys</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886347"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886347"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680886346"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886346"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-114"></span><span>    </span><span class="annot"><span class="annottext">DataCon -&gt; [Type] -&gt; [Scaled Type]
</span><a href="GHC.Core.DataCon.html#dataConInstOrigArgTys"><span class="hs-identifier hs-var">dataConInstOrigArgTys</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886347"><span class="hs-identifier hs-var">data_con</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886346"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-115"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeInstOrigArgTys"><span class="hs-identifier hs-var">conLikeInstOrigArgTys</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886344"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886344"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680886343"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886343"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-116"></span><span>    </span><span class="annot"><span class="annottext">(Type -&gt; Scaled Type) -&gt; [Type] -&gt; [Scaled Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#unrestricted"><span class="hs-identifier hs-var">unrestricted</span></a></span><span> </span><span class="annot"><span class="annottext">([Type] -&gt; [Scaled Type]) -&gt; [Type] -&gt; [Scaled Type]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [Type] -&gt; [Type]
</span><a href="GHC.Core.PatSyn.html#patSynInstArgTys"><span class="hs-identifier hs-var">patSynInstArgTys</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886344"><span class="hs-identifier hs-var">pat_syn</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886343"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-117"></span><span>
</span><span id="line-118"></span><span class="hs-comment">-- | 'TyVarBinder's for the type variables of the 'ConLike'. For pattern</span><span>
</span><span id="line-119"></span><span class="hs-comment">-- synonyms, this will always consist of the universally quantified variables</span><span>
</span><span id="line-120"></span><span class="hs-comment">-- followed by the existentially quantified type variables. For data</span><span>
</span><span id="line-121"></span><span class="hs-comment">-- constructors, the situation is slightly more complicated&#8212;see</span><span>
</span><span id="line-122"></span><span class="hs-comment">-- @Note [DataCon user type variable binders]@ in &quot;GHC.Core.DataCon&quot;.</span><span>
</span><span id="line-123"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeUserTyVarBinders"><span class="hs-identifier hs-type">conLikeUserTyVarBinders</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#InvisTVBinder"><span class="hs-identifier hs-type">InvisTVBinder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-124"></span><span id="conLikeUserTyVarBinders"><span class="annot"><span class="annottext">conLikeUserTyVarBinders :: ConLike -&gt; [InvisTVBinder]
</span><a href="GHC.Core.ConLike.html#conLikeUserTyVarBinders"><span class="hs-identifier hs-var hs-var">conLikeUserTyVarBinders</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886340"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886340"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-125"></span><span>    </span><span class="annot"><span class="annottext">DataCon -&gt; [InvisTVBinder]
</span><a href="GHC.Core.DataCon.html#dataConUserTyVarBinders"><span class="hs-identifier hs-var">dataConUserTyVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886340"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-126"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeUserTyVarBinders"><span class="hs-identifier hs-var">conLikeUserTyVarBinders</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886338"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886338"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-127"></span><span>    </span><span class="annot"><span class="annottext">PatSyn -&gt; [InvisTVBinder]
</span><a href="GHC.Core.PatSyn.html#patSynUnivTyVarBinders"><span class="hs-identifier hs-var">patSynUnivTyVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886338"><span class="hs-identifier hs-var">pat_syn</span></a></span><span> </span><span class="annot"><span class="annottext">[InvisTVBinder] -&gt; [InvisTVBinder] -&gt; [InvisTVBinder]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [InvisTVBinder]
</span><a href="GHC.Core.PatSyn.html#patSynExTyVarBinders"><span class="hs-identifier hs-var">patSynExTyVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886338"><span class="hs-identifier hs-var">pat_syn</span></a></span><span>
</span><span id="line-128"></span><span>    </span><span class="hs-comment">-- The order here is because of the order in `GHC.Tc.TyCl.PatSyn`.</span><span>
</span><span id="line-129"></span><span>
</span><span id="line-130"></span><span class="hs-comment">-- | Existentially quantified type/coercion variables</span><span>
</span><span id="line-131"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeExTyCoVars"><span class="hs-identifier hs-type">conLikeExTyCoVars</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-132"></span><span id="conLikeExTyCoVars"><span class="annot"><span class="annottext">conLikeExTyCoVars :: ConLike -&gt; [TyCoVar]
</span><a href="GHC.Core.ConLike.html#conLikeExTyCoVars"><span class="hs-identifier hs-var hs-var">conLikeExTyCoVars</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886335"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886335"><span class="hs-identifier hs-var">dcon1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [TyCoVar]
</span><a href="GHC.Core.DataCon.html#dataConExTyCoVars"><span class="hs-identifier hs-var">dataConExTyCoVars</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886335"><span class="hs-identifier hs-var">dcon1</span></a></span><span>
</span><span id="line-133"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeExTyCoVars"><span class="hs-identifier hs-var">conLikeExTyCoVars</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886333"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886333"><span class="hs-identifier hs-var">psyn1</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [TyCoVar]
</span><a href="GHC.Core.PatSyn.html#patSynExTyVars"><span class="hs-identifier hs-var">patSynExTyVars</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886333"><span class="hs-identifier hs-var">psyn1</span></a></span><span>
</span><span id="line-134"></span><span>
</span><span id="line-135"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeName"><span class="hs-identifier hs-type">conLikeName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-136"></span><span id="conLikeName"><span class="annot"><span class="annottext">conLikeName :: ConLike -&gt; Name
</span><a href="GHC.Core.ConLike.html#conLikeName"><span class="hs-identifier hs-var hs-var">conLikeName</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886331"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886331"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Name
</span><a href="GHC.Core.DataCon.html#dataConName"><span class="hs-identifier hs-var">dataConName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886331"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-137"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeName"><span class="hs-identifier hs-var">conLikeName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886329"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886329"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Name
</span><a href="GHC.Core.PatSyn.html#patSynName"><span class="hs-identifier hs-var">patSynName</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886329"><span class="hs-identifier hs-var">pat_syn</span></a></span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span class="hs-comment">-- | The \&quot;stupid theta\&quot; of the 'ConLike', such as @data Eq a@ in:</span><span>
</span><span id="line-140"></span><span class="hs-comment">--</span><span>
</span><span id="line-141"></span><span class="hs-comment">-- &gt; data Eq a =&gt; T a = ...</span><span>
</span><span id="line-142"></span><span class="hs-comment">-- It is empty for `PatSynCon` as they do not allow such contexts.</span><span>
</span><span id="line-143"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeStupidTheta"><span class="hs-identifier hs-type">conLikeStupidTheta</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ThetaType"><span class="hs-identifier hs-type">ThetaType</span></a></span><span>
</span><span id="line-144"></span><span id="conLikeStupidTheta"><span class="annot"><span class="annottext">conLikeStupidTheta :: ConLike -&gt; [Type]
</span><a href="GHC.Core.ConLike.html#conLikeStupidTheta"><span class="hs-identifier hs-var hs-var">conLikeStupidTheta</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886327"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886327"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [Type]
</span><a href="GHC.Core.DataCon.html#dataConStupidTheta"><span class="hs-identifier hs-var">dataConStupidTheta</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886327"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-145"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeStupidTheta"><span class="hs-identifier hs-var">conLikeStupidTheta</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-146"></span><span>
</span><span id="line-147"></span><span class="hs-comment">-- | Returns the `Id` of the wrapper. This is also known as the builder in</span><span>
</span><span id="line-148"></span><span class="hs-comment">-- some contexts. The value is Nothing only in the case of unidirectional</span><span>
</span><span id="line-149"></span><span class="hs-comment">-- pattern synonyms.</span><span>
</span><span id="line-150"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeWrapId_maybe"><span class="hs-identifier hs-type">conLikeWrapId_maybe</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-151"></span><span id="conLikeWrapId_maybe"><span class="annot"><span class="annottext">conLikeWrapId_maybe :: ConLike -&gt; Maybe TyCoVar
</span><a href="GHC.Core.ConLike.html#conLikeWrapId_maybe"><span class="hs-identifier hs-var hs-var">conLikeWrapId_maybe</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886324"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886324"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCoVar -&gt; Maybe TyCoVar
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(TyCoVar -&gt; Maybe TyCoVar) -&gt; TyCoVar -&gt; Maybe TyCoVar
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCoVar
</span><a href="GHC.Core.DataCon.html#dataConWrapId"><span class="hs-identifier hs-var">dataConWrapId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886324"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-152"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeWrapId_maybe"><span class="hs-identifier hs-var">conLikeWrapId_maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886322"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886322"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCoVar, Bool) -&gt; TyCoVar
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span> </span><span class="annot"><span class="annottext">((TyCoVar, Bool) -&gt; TyCoVar)
-&gt; Maybe (TyCoVar, Bool) -&gt; Maybe TyCoVar
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Maybe (TyCoVar, Bool)
</span><a href="GHC.Core.PatSyn.html#patSynBuilder"><span class="hs-identifier hs-var">patSynBuilder</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886322"><span class="hs-identifier hs-var">pat_syn</span></a></span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span class="hs-comment">-- | Returns the strictness information for each constructor</span><span>
</span><span id="line-155"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeImplBangs"><span class="hs-identifier hs-type">conLikeImplBangs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.DataCon.html#HsImplBang"><span class="hs-identifier hs-type">HsImplBang</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-156"></span><span id="conLikeImplBangs"><span class="annot"><span class="annottext">conLikeImplBangs :: ConLike -&gt; [HsImplBang]
</span><a href="GHC.Core.ConLike.html#conLikeImplBangs"><span class="hs-identifier hs-var hs-var">conLikeImplBangs</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886319"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886319"><span class="hs-identifier hs-var">data_con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [HsImplBang]
</span><a href="GHC.Core.DataCon.html#dataConImplBangs"><span class="hs-identifier hs-var">dataConImplBangs</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886319"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-157"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeImplBangs"><span class="hs-identifier hs-var">conLikeImplBangs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886317"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886317"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span>
</span><span id="line-158"></span><span>    </span><span class="annot"><span class="annottext">Int -&gt; HsImplBang -&gt; [HsImplBang]
forall a. Int -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PatSyn -&gt; Int
</span><a href="GHC.Core.PatSyn.html#patSynArity"><span class="hs-identifier hs-var">patSynArity</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886317"><span class="hs-identifier hs-var">pat_syn</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">HsImplBang
</span><a href="GHC.Core.DataCon.html#HsLazy"><span class="hs-identifier hs-var">HsLazy</span></a></span><span>
</span><span id="line-159"></span><span>
</span><span id="line-160"></span><span class="hs-comment">-- | Returns the type of the whole pattern</span><span>
</span><span id="line-161"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeResTy"><span class="hs-identifier hs-type">conLikeResTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-162"></span><span id="conLikeResTy"><span class="annot"><span class="annottext">conLikeResTy :: ConLike -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.ConLike.html#conLikeResTy"><span class="hs-identifier hs-var hs-var">conLikeResTy</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886314"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886314"><span class="hs-identifier hs-var">con</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680886313"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886313"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#dataConTyCon"><span class="hs-identifier hs-var">dataConTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886314"><span class="hs-identifier hs-var">con</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886313"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-163"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeResTy"><span class="hs-identifier hs-var">conLikeResTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886311"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886311"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span>    </span><span id="local-6989586621680886310"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886310"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.PatSyn.html#patSynInstResTy"><span class="hs-identifier hs-var">patSynInstResTy</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886311"><span class="hs-identifier hs-var">ps</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886310"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-164"></span><span>
</span><span id="line-165"></span><span class="hs-comment">-- | The \&quot;full signature\&quot; of the 'ConLike' returns, in order:</span><span>
</span><span id="line-166"></span><span class="hs-comment">--</span><span>
</span><span id="line-167"></span><span class="hs-comment">-- 1) The universally quantified type variables</span><span>
</span><span id="line-168"></span><span class="hs-comment">--</span><span>
</span><span id="line-169"></span><span class="hs-comment">-- 2) The existentially quantified type/coercion variables</span><span>
</span><span id="line-170"></span><span class="hs-comment">--</span><span>
</span><span id="line-171"></span><span class="hs-comment">-- 3) The equality specification</span><span>
</span><span id="line-172"></span><span class="hs-comment">--</span><span>
</span><span id="line-173"></span><span class="hs-comment">-- 4) The provided theta (the constraints provided by a match)</span><span>
</span><span id="line-174"></span><span class="hs-comment">--</span><span>
</span><span id="line-175"></span><span class="hs-comment">-- 5) The required theta (the constraints required for a match)</span><span>
</span><span id="line-176"></span><span class="hs-comment">--</span><span>
</span><span id="line-177"></span><span class="hs-comment">-- 6) The original argument types (i.e. before</span><span>
</span><span id="line-178"></span><span class="hs-comment">--    any change of the representation of the type)</span><span>
</span><span id="line-179"></span><span class="hs-comment">--</span><span>
</span><span id="line-180"></span><span class="hs-comment">-- 7) The original result type</span><span>
</span><span id="line-181"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFullSig"><span class="hs-identifier hs-type">conLikeFullSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span>
</span><span id="line-182"></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.DataCon.html#EqSpec"><span class="hs-identifier hs-type">EqSpec</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-183"></span><span>                   </span><span class="hs-comment">-- Why tyvars for universal but tycovars for existential?</span><span>
</span><span id="line-184"></span><span>                   </span><span class="hs-comment">-- See Note [Existential coercion variables] in GHC.Core.DataCon</span><span>
</span><span id="line-185"></span><span>                  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ThetaType"><span class="hs-identifier hs-type">ThetaType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ThetaType"><span class="hs-identifier hs-type">ThetaType</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Scaled"><span class="hs-identifier hs-type">Scaled</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-186"></span><span id="conLikeFullSig"><span class="annot"><span class="annottext">conLikeFullSig :: ConLike
-&gt; ([TyCoVar], [TyCoVar], [EqSpec], [Type], [Type], [Scaled Type],
    Type)
</span><a href="GHC.Core.ConLike.html#conLikeFullSig"><span class="hs-identifier hs-var hs-var">conLikeFullSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886307"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886307"><span class="hs-identifier hs-var">con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-187"></span><span>  </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680886306"><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886306"><span class="hs-identifier hs-var">univ_tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886305"><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886305"><span class="hs-identifier hs-var">ex_tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886304"><span class="annot"><span class="annottext">[EqSpec]
</span><a href="#local-6989586621680886304"><span class="hs-identifier hs-var">eq_spec</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886303"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886303"><span class="hs-identifier hs-var">theta</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886302"><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680886302"><span class="hs-identifier hs-var">arg_tys</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886301"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680886301"><span class="hs-identifier hs-var">res_ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon
-&gt; ([TyCoVar], [TyCoVar], [EqSpec], [Type], [Scaled Type], Type)
</span><a href="GHC.Core.DataCon.html#dataConFullSig"><span class="hs-identifier hs-var">dataConFullSig</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886307"><span class="hs-identifier hs-var">con</span></a></span><span>
</span><span id="line-188"></span><span>  </span><span class="hs-comment">-- Required theta is empty as normal data cons require no additional</span><span>
</span><span id="line-189"></span><span>  </span><span class="hs-comment">-- constraints for a match</span><span>
</span><span id="line-190"></span><span>  </span><span class="hs-keyword">in</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886306"><span class="hs-identifier hs-var">univ_tvs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886305"><span class="hs-identifier hs-var">ex_tvs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[EqSpec]
</span><a href="#local-6989586621680886304"><span class="hs-identifier hs-var">eq_spec</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886303"><span class="hs-identifier hs-var">theta</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680886302"><span class="hs-identifier hs-var">arg_tys</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680886301"><span class="hs-identifier hs-var">res_ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-191"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFullSig"><span class="hs-identifier hs-var">conLikeFullSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886299"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886299"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-192"></span><span> </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680886298"><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886298"><span class="hs-identifier hs-var">univ_tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886297"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886297"><span class="hs-identifier hs-var">req</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886296"><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886296"><span class="hs-identifier hs-var">ex_tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886295"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886295"><span class="hs-identifier hs-var">prov</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886294"><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680886294"><span class="hs-identifier hs-var">arg_tys</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680886293"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680886293"><span class="hs-identifier hs-var">res_ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn
-&gt; ([TyCoVar], [Type], [TyCoVar], [Type], [Scaled Type], Type)
</span><a href="GHC.Core.PatSyn.html#patSynSig"><span class="hs-identifier hs-var">patSynSig</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886299"><span class="hs-identifier hs-var">pat_syn</span></a></span><span>
</span><span id="line-193"></span><span> </span><span class="hs-comment">-- eqSpec is empty</span><span>
</span><span id="line-194"></span><span> </span><span class="hs-keyword">in</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886298"><span class="hs-identifier hs-var">univ_tvs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[TyCoVar]
</span><a href="#local-6989586621680886296"><span class="hs-identifier hs-var">ex_tvs</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886295"><span class="hs-identifier hs-var">prov</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680886297"><span class="hs-identifier hs-var">req</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680886294"><span class="hs-identifier hs-var">arg_tys</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680886293"><span class="hs-identifier hs-var">res_ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-195"></span><span>
</span><span id="line-196"></span><span class="hs-comment">-- | Extract the type for any given labelled field of the 'ConLike'</span><span>
</span><span id="line-197"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFieldType"><span class="hs-identifier hs-type">conLikeFieldType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.FieldLabel.html#FieldLabelString"><span class="hs-identifier hs-type">FieldLabelString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-198"></span><span id="conLikeFieldType"><span class="annot"><span class="annottext">conLikeFieldType :: ConLike -&gt; FieldLabelString -&gt; Type
</span><a href="GHC.Core.ConLike.html#conLikeFieldType"><span class="hs-identifier hs-var hs-var">conLikeFieldType</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886291"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886291"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680886290"><span class="annot"><span class="annottext">FieldLabelString
</span><a href="#local-6989586621680886290"><span class="hs-keyword hs-var">label</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; FieldLabelString -&gt; Type
</span><a href="GHC.Core.PatSyn.html#patSynFieldType"><span class="hs-identifier hs-var">patSynFieldType</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886291"><span class="hs-identifier hs-var">ps</span></a></span><span> </span><span class="annot"><span class="annottext">FieldLabelString
</span><a href="#local-6989586621680886290"><span class="hs-keyword hs-var">label</span></a></span><span>
</span><span id="line-199"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeFieldType"><span class="hs-identifier hs-var">conLikeFieldType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886288"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886288"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680886287"><span class="annot"><span class="annottext">FieldLabelString
</span><a href="#local-6989586621680886287"><span class="hs-keyword hs-var">label</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; FieldLabelString -&gt; Type
</span><a href="GHC.Core.DataCon.html#dataConFieldType"><span class="hs-identifier hs-var">dataConFieldType</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886288"><span class="hs-identifier hs-var">dc</span></a></span><span> </span><span class="annot"><span class="annottext">FieldLabelString
</span><a href="#local-6989586621680886287"><span class="hs-keyword hs-var">label</span></a></span><span>
</span><span id="line-200"></span><span>
</span><span id="line-201"></span><span>
</span><span id="line-202"></span><span class="hs-comment">-- | The ConLikes that have *all* the given fields</span><span>
</span><span id="line-203"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikesWithFields"><span class="hs-identifier hs-type">conLikesWithFields</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.FieldLabel.html#FieldLabelString"><span class="hs-identifier hs-type">FieldLabelString</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-204"></span><span id="conLikesWithFields"><span class="annot"><span class="annottext">conLikesWithFields :: [ConLike] -&gt; [FieldLabelString] -&gt; [ConLike]
</span><a href="GHC.Core.ConLike.html#conLikesWithFields"><span class="hs-identifier hs-var hs-var">conLikesWithFields</span></a></span></span><span> </span><span id="local-6989586621680886285"><span class="annot"><span class="annottext">[ConLike]
</span><a href="#local-6989586621680886285"><span class="hs-identifier hs-var">con_likes</span></a></span></span><span> </span><span id="local-6989586621680886284"><span class="annot"><span class="annottext">[FieldLabelString]
</span><a href="#local-6989586621680886284"><span class="hs-identifier hs-var">lbls</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(ConLike -&gt; Bool) -&gt; [ConLike] -&gt; [ConLike]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#filter"><span class="hs-identifier hs-var">filter</span></a></span><span> </span><span class="annot"><span class="annottext">ConLike -&gt; Bool
</span><a href="#local-6989586621680886283"><span class="hs-identifier hs-var">has_flds</span></a></span><span> </span><span class="annot"><span class="annottext">[ConLike]
</span><a href="#local-6989586621680886285"><span class="hs-identifier hs-var">con_likes</span></a></span><span>
</span><span id="line-205"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680886283"><span class="annot"><span class="annottext">has_flds :: ConLike -&gt; Bool
</span><a href="#local-6989586621680886283"><span class="hs-identifier hs-var hs-var">has_flds</span></a></span></span><span> </span><span id="local-6989586621680886280"><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886280"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(FieldLabelString -&gt; Bool) -&gt; [FieldLabelString] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#all"><span class="hs-identifier hs-var">all</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConLike -&gt; FieldLabelString -&gt; Bool
</span><a href="#local-6989586621680886278"><span class="hs-identifier hs-var">has_fld</span></a></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886280"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[FieldLabelString]
</span><a href="#local-6989586621680886284"><span class="hs-identifier hs-var">lbls</span></a></span><span>
</span><span id="line-206"></span><span>        </span><span id="local-6989586621680886278"><span class="annot"><span class="annottext">has_fld :: ConLike -&gt; FieldLabelString -&gt; Bool
</span><a href="#local-6989586621680886278"><span class="hs-identifier hs-var hs-var">has_fld</span></a></span></span><span> </span><span id="local-6989586621680886274"><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886274"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span id="local-6989586621680886273"><span class="annot"><span class="annottext">FieldLabelString
</span><a href="#local-6989586621680886273"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(FieldLabel -&gt; Bool) -&gt; [FieldLabel] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#any"><span class="hs-identifier hs-var">any</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span> </span><span id="local-6989586621680886271"><span class="annot"><span class="annottext">FieldLabel
</span><a href="#local-6989586621680886271"><span class="hs-identifier hs-var">fl</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">FieldLabel -&gt; FieldLabelString
forall a. FieldLbl a -&gt; FieldLabelString
</span><a href="GHC.Types.FieldLabel.html#flLabel"><span class="hs-identifier hs-var hs-var">flLabel</span></a></span><span> </span><span class="annot"><span class="annottext">FieldLabel
</span><a href="#local-6989586621680886271"><span class="hs-identifier hs-var">fl</span></a></span><span> </span><span class="annot"><span class="annottext">FieldLabelString -&gt; FieldLabelString -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">FieldLabelString
</span><a href="#local-6989586621680886273"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConLike -&gt; [FieldLabel]
</span><a href="GHC.Core.ConLike.html#conLikeFieldLabels"><span class="hs-identifier hs-var">conLikeFieldLabels</span></a></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680886274"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-207"></span><span>
</span><span id="line-208"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeIsInfix"><span class="hs-identifier hs-type">conLikeIsInfix</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-209"></span><span id="conLikeIsInfix"><span class="annot"><span class="annottext">conLikeIsInfix :: ConLike -&gt; Bool
</span><a href="GHC.Core.ConLike.html#conLikeIsInfix"><span class="hs-identifier hs-var hs-var">conLikeIsInfix</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680886269"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886269"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Bool
</span><a href="GHC.Core.DataCon.html#dataConIsInfix"><span class="hs-identifier hs-var">dataConIsInfix</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680886269"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-210"></span><span class="annot"><a href="GHC.Core.ConLike.html#conLikeIsInfix"><span class="hs-identifier hs-var">conLikeIsInfix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680886267"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886267"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Bool
</span><a href="GHC.Core.PatSyn.html#patSynIsInfix"><span class="hs-identifier hs-var">patSynIsInfix</span></a></span><span>  </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680886267"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-211"></span></pre></body></html>